/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author lomanda
 */
@Entity
@Table(name = "habilidadeFuncionario")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "HabilidadeFuncionario.findAll", query = "SELECT h FROM HabilidadeFuncionario h"),
    @NamedQuery(name = "HabilidadeFuncionario.findByFkHabilidades", query = "SELECT h FROM HabilidadeFuncionario h WHERE h.habilidadeFuncionarioPK.fkHabilidades = :fkHabilidades"),
    @NamedQuery(name = "HabilidadeFuncionario.findByFkFuncionario", query = "SELECT h FROM HabilidadeFuncionario h WHERE h.habilidadeFuncionarioPK.fkFuncionario = :fkFuncionario"),
    @NamedQuery(name = "HabilidadeFuncionario.findByTempoExperiencia", query = "SELECT h FROM HabilidadeFuncionario h WHERE h.tempoExperiencia = :tempoExperiencia")})
public class HabilidadeFuncionario implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected HabilidadeFuncionarioPK habilidadeFuncionarioPK;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 45)
    @Column(name = "tempoExperiencia")
    private String tempoExperiencia;
    @JoinColumn(name = "fkFuncionario", referencedColumnName = "idFuncionario", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Funcionario funcionario;
    @JoinColumn(name = "fkHabilidades", referencedColumnName = "idHabilidades", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Habilidade habilidade;

    public HabilidadeFuncionario() {
    }

    public HabilidadeFuncionario(HabilidadeFuncionarioPK habilidadeFuncionarioPK) {
        this.habilidadeFuncionarioPK = habilidadeFuncionarioPK;
    }

    public HabilidadeFuncionario(HabilidadeFuncionarioPK habilidadeFuncionarioPK, String tempoExperiencia) {
        this.habilidadeFuncionarioPK = habilidadeFuncionarioPK;
        this.tempoExperiencia = tempoExperiencia;
    }

    public HabilidadeFuncionario(int fkHabilidades, int fkFuncionario) {
        this.habilidadeFuncionarioPK = new HabilidadeFuncionarioPK(fkHabilidades, fkFuncionario);
    }

    public HabilidadeFuncionarioPK getHabilidadeFuncionarioPK() {
        return habilidadeFuncionarioPK;
    }

    public void setHabilidadeFuncionarioPK(HabilidadeFuncionarioPK habilidadeFuncionarioPK) {
        this.habilidadeFuncionarioPK = habilidadeFuncionarioPK;
    }

    public String getTempoExperiencia() {
        return tempoExperiencia;
    }

    public void setTempoExperiencia(String tempoExperiencia) {
        this.tempoExperiencia = tempoExperiencia;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public Habilidade getHabilidade() {
        return habilidade;
    }

    public void setHabilidade(Habilidade habilidade) {
        this.habilidade = habilidade;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (habilidadeFuncionarioPK != null ? habilidadeFuncionarioPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof HabilidadeFuncionario)) {
            return false;
        }
        HabilidadeFuncionario other = (HabilidadeFuncionario) object;
        if ((this.habilidadeFuncionarioPK == null && other.habilidadeFuncionarioPK != null) || (this.habilidadeFuncionarioPK != null && !this.habilidadeFuncionarioPK.equals(other.habilidadeFuncionarioPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.HabilidadeFuncionario[ habilidadeFuncionarioPK=" + habilidadeFuncionarioPK + " ]";
    }
    
}
